﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DesktopDOHS
{
    public partial class frmCadastroCodigo : Form
    {
        public frmCadastroCodigo()
        {
            InitializeComponent();
        }

        private void frmCadastroCodigo_Load(object sender, EventArgs e)
        {
            carregaExaminadores();
        }

        private void tbcCadastroCodigo_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (tbcCadastroCodigo.SelectedIndex == 1)
                if (lvwGrupoEtnico.Items.Count == 0)
                    carregaGrupoEtnico();
            if (tbcCadastroCodigo.SelectedIndex == 2)
                if (lvwOcupacao.Items.Count == 0)
                    carregaOcupacao();
            if (tbcCadastroCodigo.SelectedIndex == 3)
                if (lvwLocGeo.Items.Count == 0)
                    carregaLocGeo();
            if (tbcCadastroCodigo.SelectedIndex == 4)
                if (lvwOutrosDados.Items.Count == 0)
                    carregaOutrosDados();
        }

        #region Métodos

        private void carregaExaminadores()
        {
            DataTable dt = appData.Commands.carregaDados("Examinador", "Nome");
            lvwExam.Items.Clear();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                lvwExam.Items.Add(dt.Rows[i].ItemArray[0].ToString());
                lvwExam.Items[i].SubItems.Add(dt.Rows[i].ItemArray[1].ToString());
                lvwExam.Items[i].SubItems.Add(dt.Rows[i].ItemArray[2].ToString());
            }
        }

        private void carregaGrupoEtnico()
        {
            DataTable dt = appData.Commands.carregaDados("GrupoEtnico", "GrupoEtnico");
            lvwGrupoEtnico.Items.Clear();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                lvwGrupoEtnico.Items.Add(dt.Rows[i].ItemArray[0].ToString());
                lvwGrupoEtnico.Items[i].SubItems.Add(dt.Rows[i].ItemArray[1].ToString());
                lvwGrupoEtnico.Items[i].SubItems.Add(dt.Rows[i].ItemArray[2].ToString());
            }
        }

        private void carregaOcupacao()
        {
            DataTable dt = appData.Commands.carregaDados("Ocupacao", "Ocupacao");
            lvwOcupacao.Items.Clear();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                lvwOcupacao.Items.Add(dt.Rows[i].ItemArray[0].ToString());
                lvwOcupacao.Items[i].SubItems.Add(dt.Rows[i].ItemArray[1].ToString());
                lvwOcupacao.Items[i].SubItems.Add(dt.Rows[i].ItemArray[2].ToString());
            }
        }

        private void carregaLocGeo()
        {
            DataTable dt = appData.Commands.carregaDados("LocGeo", "LocGeo");
            lvwLocGeo.Items.Clear();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                lvwLocGeo.Items.Add(dt.Rows[i].ItemArray[0].ToString());
                lvwLocGeo.Items[i].SubItems.Add(dt.Rows[i].ItemArray[1].ToString());
                lvwLocGeo.Items[i].SubItems.Add(dt.Rows[i].ItemArray[2].ToString());
            }
        }

        private void carregaOutrosDados()
        {
            DataTable dt = appData.Commands.carregaDados("OutrosDados", "OutrosDados");
            lvwOutrosDados.Items.Clear();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                lvwOutrosDados.Items.Add(dt.Rows[i].ItemArray[0].ToString());
                lvwOutrosDados.Items[i].SubItems.Add(dt.Rows[i].ItemArray[1].ToString());
                lvwOutrosDados.Items[i].SubItems.Add(dt.Rows[i].ItemArray[2].ToString());
            }
        }

        #endregion

        #region Examinadores

        private string oldCodigoExam = "-1";
        private string oldDataExam = "-1";

        private void btnAddExam_Click(object sender, EventArgs e)
        {
            if (appData.Commands.buscaRegistro("Examinador", "Nome", txtCodigoExam.Text, dtpDataExam.Value.ToString("dd/MM/yyyy")).Rows.Count == 0)
            {
                if (oldCodigoExam == "-1")
                {
                    appData.Commands.insertDados("Examinador", "Nome", txtCodigoExam.Text, dtpDataExam.Value.ToString("dd/MM/yyyy"), txtNomeExam.Text);
                }
                else
                {
                    appData.Commands.updateDados("Examinador", "Nome", oldCodigoExam, oldDataExam, txtCodigoExam.Text, dtpDataExam.Value.ToString("dd/MM/yyyy"), txtNomeExam.Text);
                    btnAddExam.Text = "Adicionar";
                    btnAlterarExam.Visible = true;
                    btnExcluirExam.Visible = true;
                    lvwExam.Enabled = true;
                    oldCodigoExam = oldDataExam = "-1";
                }
                txtCodigoExam.Text = "";
                dtpDataExam.Value = DateTime.Now;
                txtNomeExam.Text = "";
                carregaExaminadores();
            }
            else
                MessageBox.Show("Este registro ja existe! \n Por Favor insira um Código ou Data diferente", 
                    "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }

        private void btnAlterarExam_Click(object sender, EventArgs e)
        {
            oldCodigoExam = txtCodigoExam.Text = lvwExam.Items[lvwExam.SelectedIndices[0]].Text;
            oldDataExam = lvwExam.Items[lvwExam.SelectedIndices[0]].SubItems[1].Text;
            dtpDataExam.Value = Convert.ToDateTime(lvwExam.Items[lvwExam.SelectedIndices[0]].SubItems[1].Text);
            txtNomeExam.Text = lvwExam.Items[lvwExam.SelectedIndices[0]].SubItems[2].Text;
            btnAddExam.Text = "Gravar";
            btnAlterarExam.Visible = false;
            btnExcluirExam.Visible = false;
            lvwExam.Enabled = false;
        }

        private void btnExcluirExam_Click(object sender, EventArgs e)
        {
            int resposta = Convert.ToInt32(MessageBox.Show("Deseja excluir este Registro?",
               "Mensagem", MessageBoxButtons.YesNo, MessageBoxIcon.Question));
            if (resposta == 6)
            {
                appData.Commands.deleteDados("Examinador", lvwExam.Items[lvwExam.SelectedIndices[0]].Text, lvwExam.Items[lvwExam.SelectedIndices[0]].SubItems[1].Text);
                carregaExaminadores();
            }
        }

        #endregion

        #region Grupo Étnico

        private string oldCodigoGE = "-1";
        private string oldDataGE = "-1";

        private void btnAddGE_Click(object sender, EventArgs e)
        {
            if (appData.Commands.buscaRegistro("GrupoEtnico", "GrupoEtnico", txtCodigoGE.Text, dtpDataGE.Value.ToString("dd/MM/yyyy")).Rows.Count == 0)
            {
                if (oldCodigoExam == "-1")
                {
                    appData.Commands.insertDados("GrupoEtnico", "GrupoEtnico", txtCodigoGE.Text, dtpDataGE.Value.ToString("dd/MM/yyyy"), txtGrupoEtnico.Text);
                }
                else
                {
                    appData.Commands.updateDados("GrupoEtnico", "GrupoEtnico", oldCodigoGE, oldDataGE, txtCodigoGE.Text, dtpDataGE.Value.ToString("dd/MM/yyyy"), txtGrupoEtnico.Text);
                    btnAddGE.Text = "Adicionar";
                    btnAlterarGE.Visible = true;
                    btnExcluirGE.Visible = true;
                    lvwGrupoEtnico.Enabled = true;
                    oldCodigoGE = oldDataGE = "-1";
                }
                txtCodigoGE.Text = "";
                dtpDataGE.Value = DateTime.Now;
                txtGrupoEtnico.Text = "";
                carregaGrupoEtnico();
            }
            else
                MessageBox.Show("Este registro ja existe! \n Por Favor insira um Código ou Data diferente",
                    "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }

        private void btnAlterarGE_Click(object sender, EventArgs e)
        {
            oldCodigoGE = txtCodigoGE.Text = lvwGrupoEtnico.Items[lvwGrupoEtnico.SelectedIndices[0]].Text;
            oldDataGE = lvwGrupoEtnico.Items[lvwGrupoEtnico.SelectedIndices[0]].SubItems[1].Text;
            dtpDataGE.Value = Convert.ToDateTime(lvwGrupoEtnico.Items[lvwGrupoEtnico.SelectedIndices[0]].SubItems[1].Text);
            txtGrupoEtnico.Text = lvwGrupoEtnico.Items[lvwGrupoEtnico.SelectedIndices[0]].SubItems[2].Text;
            btnAddGE.Text = "Gravar";
            btnAlterarGE.Visible = false;
            btnExcluirGE.Visible = false;
            lvwGrupoEtnico.Enabled = false;
        }

        private void btnExcluirGE_Click(object sender, EventArgs e)
        {
            int resposta = Convert.ToInt32(MessageBox.Show("Deseja excluir este Registro?",
                "Mensagem", MessageBoxButtons.YesNo, MessageBoxIcon.Question));
            if (resposta == 6)
            {
                appData.Commands.deleteDados("GrupoEtnico", lvwGrupoEtnico.Items[lvwGrupoEtnico.SelectedIndices[0]].Text, lvwGrupoEtnico.Items[lvwGrupoEtnico.SelectedIndices[0]].SubItems[1].Text);
                carregaGrupoEtnico();
            }
        }

        #endregion

        #region Ocupação

        private string oldCodigoOcupacao = "-1";
        private string oldDataOcupacao = "-1";

        private void btnAddOcupacao_Click(object sender, EventArgs e)
        {
            if (appData.Commands.buscaRegistro("Ocupacao", "Ocupacao", txtCodigoOcupacao.Text, dtpDataOcupacao.Value.ToString("dd/MM/yyyy")).Rows.Count == 0)
            {
                if (oldCodigoOcupacao == "-1")
                {
                    appData.Commands.insertDados("Ocupacao", "Ocupacao", txtCodigoOcupacao.Text, dtpDataOcupacao.Value.ToString("dd/MM/yyyy"), txtOcupacao.Text);
                }
                else
                {
                    appData.Commands.updateDados("Ocupacao", "Ocupacao", oldCodigoOcupacao, oldDataOcupacao, txtCodigoOcupacao.Text, dtpDataOcupacao.Value.ToString("dd/MM/yyyy"), txtOcupacao.Text);
                    btnAddOcupacao.Text = "Adicionar";
                    btnAlterarOcupacao.Visible = true;
                    btnExcluirOcupacao.Visible = true;
                    lvwOcupacao.Enabled = true;
                    oldCodigoOcupacao = oldDataOcupacao = "-1";
                }
                txtCodigoOcupacao.Text = "";
                dtpDataOcupacao.Value = DateTime.Now;
                txtOcupacao.Text = "";
                carregaOcupacao();
            }
            else
                MessageBox.Show("Este registro ja existe! \n Por Favor insira um Código ou Data diferente",
                    "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }

        private void btnAlterarOcupacao_Click(object sender, EventArgs e)
        {
            oldCodigoOcupacao = txtCodigoOcupacao.Text = lvwOcupacao.Items[lvwOcupacao.SelectedIndices[0]].Text;
            oldDataOcupacao = lvwOcupacao.Items[lvwOcupacao.SelectedIndices[0]].SubItems[1].Text;
            dtpDataOcupacao.Value = Convert.ToDateTime(lvwOcupacao.Items[lvwOcupacao.SelectedIndices[0]].SubItems[1].Text);
            txtOcupacao.Text = lvwOcupacao.Items[lvwOcupacao.SelectedIndices[0]].SubItems[2].Text;
            btnAddOcupacao.Text = "Gravar";
            btnAlterarOcupacao.Visible = false;
            btnExcluirOcupacao.Visible = false;
            lvwOcupacao.Enabled = false;
        }

        private void btnExcluirOcupacao_Click(object sender, EventArgs e)
        {
            int resposta = Convert.ToInt32(MessageBox.Show("Deseja excluir este Registro?",
                "Mensagem", MessageBoxButtons.YesNo, MessageBoxIcon.Question));
            if (resposta == 6)
            {
                appData.Commands.deleteDados("OutrosDados", lvwOcupacao.Items[lvwOcupacao.SelectedIndices[0]].Text, lvwOcupacao.Items[lvwOcupacao.SelectedIndices[0]].SubItems[1].Text);
                carregaOcupacao();
            }
        }

        #endregion

        #region Localização Geográfica

        private string oldCodigoLocGeo = "-1";
        private string oldDataLocGeo = "-1";

        private void btnAddLocGeo_Click(object sender, EventArgs e)
        {
            if (appData.Commands.buscaRegistro("LocGeo", "LocGeo", txtCodigoLocGeo.Text, dtpDataLocGeo.Value.ToString("dd/MM/yyyy")).Rows.Count == 0)
            {
                if (oldCodigoLocGeo == "-1")
                {
                    appData.Commands.insertDados("LocGeo", "LocGeo", txtCodigoLocGeo.Text, dtpDataLocGeo.Value.ToString("dd/MM/yyyy"), txtLocGeo.Text);
                }
                else
                {
                    appData.Commands.updateDados("LocGeo", "LocGeo", oldCodigoLocGeo, oldDataLocGeo, txtCodigoLocGeo.Text, dtpDataLocGeo.Value.ToString("dd/MM/yyyy"), txtLocGeo.Text);
                    btnAddLocGeo.Text = "Adicionar";
                    btnAlterarLocGeo.Visible = true;
                    btnExcluirLocGeo.Visible = true;
                    lvwLocGeo.Enabled = true;
                    oldCodigoLocGeo = oldDataLocGeo = "-1";
                }
                txtCodigoLocGeo.Text = "";
                dtpDataLocGeo.Value = DateTime.Now;
                txtLocGeo.Text = "";
                carregaLocGeo();
            }
            else
                MessageBox.Show("Este registro ja existe! \n Por Favor insira um Código ou Data diferente",
                    "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }

        private void btnAlterarLocGeo_Click(object sender, EventArgs e)
        {
            oldCodigoLocGeo = txtCodigoLocGeo.Text = lvwLocGeo.Items[lvwLocGeo.SelectedIndices[0]].Text;
            oldDataLocGeo = lvwLocGeo.Items[lvwLocGeo.SelectedIndices[0]].SubItems[1].Text;
            dtpDataLocGeo.Value = Convert.ToDateTime(lvwLocGeo.Items[lvwLocGeo.SelectedIndices[0]].SubItems[1].Text);
            txtLocGeo.Text = lvwLocGeo.Items[lvwLocGeo.SelectedIndices[0]].SubItems[2].Text;
            btnAddLocGeo.Text = "Gravar";
            btnAlterarLocGeo.Visible = false;
            btnExcluirLocGeo.Visible = false;
            lvwLocGeo.Enabled = false;
        }

        private void btnExcluirLocGeo_Click(object sender, EventArgs e)
        {
            int resposta = Convert.ToInt32(MessageBox.Show("Deseja excluir este Registro?",
                "Mensagem", MessageBoxButtons.YesNo, MessageBoxIcon.Question));
            if (resposta == 6)
            {
                appData.Commands.deleteDados("OutrosDados", lvwLocGeo.Items[lvwLocGeo.SelectedIndices[0]].Text, lvwLocGeo.Items[lvwLocGeo.SelectedIndices[0]].SubItems[1].Text);
                carregaLocGeo();
            }
        }

        #endregion

        #region Outros Dados

        private string oldCodigoOD = "-1";
        private string oldDataOD = "-1";

        private void btnAddOD_Click(object sender, EventArgs e)
        {
            if (appData.Commands.buscaRegistro("OutrosDados", "OutrosDados", txtCodigoOD.Text, dtpDataOcupacao.Value.ToString("dd/MM/yyyy")).Rows.Count == 0)
            {
                if (oldCodigoOD == "-1")
                {
                    appData.Commands.insertDados("OutrosDados", "OutrosDados", txtCodigoOD.Text, dtpDataOD.Value.ToString("dd/MM/yyyy"), txtOD.Text);
                }
                else
                {
                    appData.Commands.updateDados("OutrosDados", "OutrosDados", oldCodigoOD, oldDataOD, txtCodigoOD.Text, dtpDataOD.Value.ToString("dd/MM/yyyy"), txtOD.Text);
                    btnAddOD.Text = "Adicionar";
                    btnAlterarOD.Visible = true;
                    btnExcluirOD.Visible = true;
                    lvwOutrosDados.Enabled = true;
                    oldCodigoOD = oldDataOD = "-1";
                }
                txtCodigoOD.Text = "";
                dtpDataOD.Value = DateTime.Now;
                txtOD.Text = "";
                carregaOutrosDados();
            }
            else
                MessageBox.Show("Este registro ja existe! \n Por Favor insira um Código ou Data diferente",
                    "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }

        private void btnAlterarOD_Click(object sender, EventArgs e)
        {
            oldCodigoOD = txtCodigoOD.Text = lvwOutrosDados.Items[lvwOutrosDados.SelectedIndices[0]].Text;
            oldDataOD = lvwOutrosDados.Items[lvwOutrosDados.SelectedIndices[0]].SubItems[1].Text;
            dtpDataOD.Value = Convert.ToDateTime(lvwOutrosDados.Items[lvwOutrosDados.SelectedIndices[0]].SubItems[1].Text);
            txtOD.Text = lvwOutrosDados.Items[lvwOutrosDados.SelectedIndices[0]].SubItems[2].Text;
            btnAddOD.Text = "Gravar";
            btnAlterarOD.Visible = false;
            btnExcluirOD.Visible = false;
            lvwOutrosDados.Enabled = false;
        }

        private void btnExcluirOD_Click(object sender, EventArgs e)
        {
            int resposta = Convert.ToInt32(MessageBox.Show("Deseja excluir este Registro?",
                "Mensagem", MessageBoxButtons.YesNo, MessageBoxIcon.Question));
            if (resposta == 6)
            {
                appData.Commands.deleteDados("OutrosDados", lvwOutrosDados.Items[lvwOutrosDados.SelectedIndices[0]].Text, lvwOutrosDados.Items[lvwOutrosDados.SelectedIndices[0]].SubItems[1].Text);
                carregaOutrosDados();
            }
        }

        #endregion




    }
}
